home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #2 / Amiga Plus CD - 2004 - No. 02.iso / AmigaPlus / Tools / Development / RxMUI / Examples / WarpDT.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2004-01-31  |  27.8 KB  |  744 lines

  1. /*
  2. Name:     WarpDT.rexx
  3. Goal:     Warp datatypes configuration GUI
  4. Version:  2.0
  5. Date:     10.11.2002
  6. Author:   Alfonso Ranieri
  7. */
  8.  
  9. signal on halt
  10. signal on break_c
  11.  
  12. call Init()
  13. call CreateApp()
  14. call HandleApp()
  15. /* never reached */
  16. /***********************************************************************/
  17. Init: procedure expose global.
  18.     l="rmh.library";if ~show("L",l) then;if ~AddLib(l,0,-30) then exit
  19.     if AddLibrary("rexxsupport.library","rxmui.library")~=0 then exit
  20.     call RxMUIOpt("DebugMode ShowErr")
  21.     global.test=0
  22.     return
  23. /***********************************************************************/
  24. HandleApp: procedure expose global.
  25.     ctrl_c=2**12
  26.     do forever
  27.         call NewHandle("app","h",ctrl_c)
  28.         if and(h.signals,ctrl_c)~=0 then call SafeExit()
  29.         if h.EventFlag then
  30.             select
  31.                 when h.event="QUIT" then call SafeExit()
  32.                 otherwise interpret h.event
  33.             end
  34.     end
  35.     /* never reached */
  36. /***********************************************************************/
  37. CreateApp: procedure expose global.
  38.  
  39.     mstrip.0="mproject"
  40.      mproject.Class="menu"
  41.      mproject.Title="Project"
  42.       mproject.0=MenuItem("mabout","About...","?")
  43.       mproject.1=MenuItem("maboutrxmui","About RxMUI...")
  44.       mproject.2=MenuItem("maboutmui","About MUI...")
  45.       mproject.3=MenuItem("","BAR")
  46.       mproject.4=MenuItem("mhide","Hide","H")
  47.       mproject.5=MenuItem("","BAR")
  48.       mproject.6=MenuItem("mquit","Quit","Q")
  49.     mstrip.1="meditor"
  50.      meditor.Class="menu"
  51.      meditor.Title="Editor"
  52.       meditor.0=MenuItem("mdefault","Reset to defaults","D")
  53.       meditor.1=MenuItem("mlast","Last saveds","L")
  54.       meditor.2=MenuItem("mrestore","Restore","R")
  55.       meditor.3=MenuItem("","BAR")
  56.       meditor.4=MenuItem("mmui","MUI...")
  57.     if NewObj("menustrip","mstrip")>0 then exit
  58.  
  59.     app.title="WarpDT"
  60.     app.version="$VER: WarpDT 2.0 (10.11.2002)"
  61.     app.copyright="Copyright 2002 by Alfonso Ranieri"
  62.     app.author="Alfonso Ranieri"
  63.     app.description="Manages Warp DT preferences"
  64.     app.base="WarpDT"
  65.     app.MenuStrip="mstrip"
  66.     app.SubWindow="mwin"
  67.  
  68.      mwin.title="WarpDT Preferences"
  69.      mwin.ID="MAIN"
  70.      mwin.contents="mgroup"
  71.  
  72.       mgroup.0="hg"
  73.        hg.Class="group"
  74.        hg.Horiz=1
  75.        hg.Spacing=2
  76.  
  77.        hg.0="hlister"
  78.         hlister.Class="listview"
  79.         hlister.FixWidthTxt="123456789012"
  80.         hlister.list="entries"
  81.         hlister.CycleChain=1
  82.           entries.Frame="InputList"
  83.           entries.Names=ParseText("WarpDT,JPEG,PNG,TIFF,%iBPM,%iPSD")
  84.  
  85.        hg.1="hpager"
  86.         hpager.Class="group"
  87.         hpager.PageMode=1
  88.         hpager.Frame="ReadList"
  89.         hpager.Background="PageBack"
  90.  
  91.          hpager.0="warpdt"
  92.           warpdt.Class="group"
  93.            warpdt.0="dith"
  94.             dith.Class="group"
  95.             dith.Frame="Group"
  96.             dith.FrameTitle="Dithering"
  97.             dith.Background="GroupBack"
  98.              dith.0=VSpace()
  99.              dith.1="dith1"
  100.               dith1.Class="group"
  101.               dith1.Columns=2
  102.               dith1.0=Label("_Override")
  103.                 DITHER_OVERRIDE.CycleChain=1
  104.               dith1.1=MakeObj("DITHER_OVERRIDE","Cycle","Nothing|Defaults Only|Applications Only|Everything","o",1)
  105.               dith1.2=Label("_Quality")
  106.                 DITHER_QUALITY.CycleChain=1
  107.               dith1.3=MakeObj("DITHER_QUALITY","Cycle","Poor (Fast)|Good (Slow)|Best (Slow)","q")
  108.               dith1.4=Label("_Depth filter")
  109.                 DITHER_DEPTH.CycleChain=1
  110.               dith1.5=MakeObj("DITHER_DEPTH","slider",'d',1,24)
  111.              dith.2=VSpace()
  112.  
  113.            warpdt.1="PenSel"
  114.             PenSel.Class="group"
  115.             PenSel.Frame="Group"
  116.             PenSel.FrameTitle="Pen selection"
  117.             PenSel.Background="GroupBack"
  118.              PenSel.0=VSpace()
  119.              PenSel.1="PenSel1"
  120.               PenSel1.Class="Group"
  121.               PenSel1.Columns=2
  122.               PenSel1.0=Label("O_verride")
  123.                 PENS_OVERRIDE.CycleChain=1
  124.               PenSel1.1=MakeObj("PENS_OVERRIDE","Cycle","Nothing|Defaults Only|Applications Only|Everything","v",1)
  125.               PenSel1.2=Label("Qu_ality")
  126.                 PENS_QUALITY.CycleChain=1
  127.               PenSel1.3=MakeObj("PENS_QUALITY","Cycle","Poor|Good|Best","a")
  128.              PenSel.2=VSpace()
  129.  
  130.          hpager.1="jpeg"
  131.           jpeg.Class="group"
  132.  
  133.            jpeg.0="Dec"
  134.             Dec.Class="group"
  135.             Dec.Frame="Group"
  136.             Dec.FrameTitle="Decoder"
  137.             Dec.Background="GroupBack"
  138.              Dec.0=VSpace()
  139.              Dec.1="dec1"
  140.               dec1.Class="group"
  141.               dec1.Columns=2
  142.                dec1.0=Label("_Output mode")
  143.                  OUTPUT_MODE.CycleChain=1
  144.                dec1.1=MakeObj("OUTPUT_MODE","Cycle","Full Colour (24 bit)|Reduced Colour|Grey scale","o",1)
  145.                dec1.2=Label("_DCT quality")
  146.                  DCT_METHOD.CycleChain=1
  147.                dec1.3=MakeObj("DCT_METHOD","Cycle","Good (Fatest)|Best (Slower)","d")
  148.                dec1.4=Label("_Fancy Upsampling")
  149.                  FANCY_UPSAMPLING.CycleChain=1
  150.                dec1.5=MakeObj(,"HLeft",Checkmark("FANCY_UPSAMPLING",,"f"))
  151.              Dec.2=VSpace()
  152.  
  153.            jpeg.1="ColRed"
  154.             ColRed.Class="group"
  155.             ColRed.Frame="Group"
  156.             ColRed.FrameTitle="Colour reduction"
  157.             ColRed.Background="GroupBack"
  158.              ColRed.0=VSpace()
  159.              ColRed.1="crg"
  160.               crg.Class="group"
  161.               crg.Columns=2
  162.                crg.0=Label("D_ithering")
  163.                  DITHER.CycleChain=1
  164.                crg.1=MakeObj("DITHER","Cycle","None|Ordered|Floyd-Steinberg","i",0)
  165.                crg.2=Label("Co_lour Quality")
  166.                  QUANTIZATION.CycleChain=1
  167.                crg.3=MakeObj("QUANTIZATION","Cycle","Poor (Fast)|Best (Slow)","l")
  168.                crg.4=Label("_Max Colours")
  169.                  NUM_COLOURS.CycleChain=1
  170.                crg.5=MakeObj("NUM_COLOURS","slider",'m',8,256)
  171.              ColRed.2=VSpace()
  172.  
  173.          hpager.2="png"
  174.           png.Class="group"
  175.  
  176.             png.0="gamma"
  177.              gamma.Class="group"
  178.              gamma.Background="GroupBack"
  179.              gamma.Frame="Group"
  180.              gamma.FrameTitle="Gamma correction"
  181.              gamma.0=VSpace()
  182.              gamma.1="gamma1"
  183.               gamma1.Class="group"
  184.                GAMMA_CORRECTION.CycleChain=1
  185.               gamma1.0=MakeObj(,"HCenter",MakeObj(,"HGroup",Label("_Enable"),Checkmark("GAMMA_CORRECTION",,'e')))
  186.               gamma1.1="GammaCorrection"
  187.                GammaCorrection.Class="group"
  188.                GammaCorrection.Columns=2
  189.                 GammaCorrection.0=Label("Sc_reen Gamma")
  190.                 GammaCorrection.1="ScreenGammaPO"
  191.                   ScreenGammaPO.Class="PopObject"
  192.                   ScreenGammaPO.ButtonCycleChain=1
  193.                    SCREEN_GAMMA.Accept="0123456789."
  194.                    SCREEN_GAMMA.CycleChain=1
  195.                   ScreenGammaPO.String=String("SCREEN_GAMMA",'r')
  196.                   ScreenGammaPO.Object="ScreenGammaLV"
  197.                    ScreenGammaLV.Class="Listview"
  198.                    ScreenGammaLV.AutoDefault=1
  199.                    ScreenGammaLV.List="ScreenGammaList"
  200.                     ScreenGammaList.Names="Normal,Darker,Brighter"
  201.                   ScreenGammaPO.OpenFun="call set('ScreenGammaList','Active',-1);return 1"
  202.                   ScreenGammaPO.CloseFun="
  203.                         v.0=2.2;v.1=2.0;v.2=2.4;
  204.                         a=xget('ScreenGammaList','Active');
  205.                         call set('SCREEN_GAMMA','contents',v.a)"
  206.  
  207.                GammaCorrection.2=Label("_Image gamma")
  208.                GammaCorrection.3="ImageGammaPO"
  209.                   ImageGammaPO.Class="PopObject"
  210.                   ImageGammaPO.ButtonCycleChain=1
  211.                    IMAGE_GAMMA.Accept="0123456789."
  212.                    IMAGE_GAMMA.CycleChain=1
  213.                   ImageGammaPO.String=String("IMAGE_GAMMA",'i')
  214.                   ImageGammaPO.Object="ImageGammaLV"
  215.                    ImageGammaLV.Class="Listview"
  216.                    ImageGammaLV.AutoDefault=1
  217.                    ImageGammaLV.List="ImageGammaList"
  218.                     ImageGammaList.Names="Normal,Low,High"
  219.                   ImageGammaPO.OpenFun="call set('ImageGammaList','Active',-1);return 1"
  220.                   ImageGammaPO.CloseFun="
  221.                         v.0=0.45455;v.1=0.35;v.2=0.55;
  222.                         a=xget('ImageGammaList','Active');
  223.                         call set('IMAGE_GAMMA','contents',v.a)"
  224.  
  225.              gamma.2=VSpace()
  226.  
  227.             AlphaMode.Frame="Group"
  228.             AlphaMode.FrameTitle="Alpha Mode"
  229.             AlphaMode.Background="GroupBack"
  230.             ALPHA_MODE.CycleChain=1
  231.            png.1=MakeObj("AlphaMode","VCenter",,
  232.                     MakeObj(,"VCenter",,
  233.                         MakeObj(,"HCenter",,
  234.                             MakeObj(,"HGroup",,
  235.                                 Label("E_nable"),,
  236.                                 Checkmark("ALPHA_MODE",,'n')))))
  237.  
  238.          hpager.3="tiff"
  239.           tiff.Class="Group"
  240.            tiff.0="fax"
  241.             fax.Class="Group"
  242.             fax.Frame="Group"
  243.             fax.FrameTitle="Fax correction"
  244.             fax.Background="GroupBack"
  245.              fax.0=VSpace()
  246.              fax.1="fax1"
  247.               fax1.Class="group"
  248.               fax1.Columns=2
  249.                fax1.0=Label("Sc_aling")
  250.                 FAX_SCALING.CycleChain=1
  251.                fax1.1=MakeObj("FAX_SCALING","Cycle","Full|Half|Quarter",'a')
  252.                fax1.2=Label("_Expand")
  253.                 FAX_EXPAND.CycleChain=1
  254.                fax1.3=MakeObj(,"HLeft",Checkmark("FAX_EXPAND",,'e'))
  255.              fax.2=VSpace()
  256.  
  257.          hpager.4="bpm"
  258.           bpm.Class="Group"
  259.           bpm.Background="GroupBack"
  260.             bmpt.SetVMax=0
  261.            bpm.0=text("bmpt","No options for BMP","none","none")
  262.  
  263.          hpager.5="psd"
  264.           psd.Class="Group"
  265.           psd.Background="GroupBack"
  266.             psdt.SetVMax=0
  267.            psd.0=text("psdt","No options for PSD","none","none")
  268.  
  269.       mgroup.1=Text("info")
  270.  
  271.       mgroup.2="bg"
  272.        bg.Class="group"
  273.        bg.Horiz=1
  274.        bg.SameSize=1
  275.          save.CycleChain=1
  276.         bg.0=button("save","_Save")
  277.         bg.1=HSpace()
  278.          use.CycleChain=1
  279.         bg.2=button("use","_Use")
  280.         bg.3=HSpace()
  281.          test.CycleChain=1
  282.         bg.4=button("test","_Test")
  283.         bg.5=HSpace()
  284.          cancel.CycleChain=1
  285.         bg.6=button("cancel","_Cancel")
  286.  
  287.     if NewObj("Application","app")>0 then exit
  288.  
  289.     call set("hlister","Active",0)
  290.  
  291.     call notify("mwin","CloseRequest",1,"app","ReturnID","quit")
  292.  
  293.     call notify("mabout","MenuTrigger","Everytime","app","about","mwin")
  294.     call notify("maboutrxmui","MenuTrigger","Everytime","app","AboutRxMUI","mwin")
  295.     call notify("maboutmui","MenuTrigger","Everytime","app","AboutMUI","mwin")
  296.     call notify("mhide","MenuTrigger","Everytime","app","set","iconified",1)
  297.     call notify("mquit","MenuTrigger","Everytime","app","ReturnID","quit")
  298.     call notify("mdefault","MenuTrigger","Everytime","app","return","call DefaultConfig()")
  299.     call notify("mlast","MenuTrigger","Everytime","app","return","call RestoreConfig(1)")
  300.     call notify("mrestore","MenuTrigger","Everytime","app","return","call RestoreConfig(0)")
  301.     call notify("mmui","MenuTrigger","Everytime","app","OpenConfigWindow")
  302.  
  303.     call notify("hlister","Active","Everytime","hpager","set","activepage","triggervalue")
  304.  
  305.     call notify("DITHER_OVERRIDE","Active","Everytime","DITHER_QUALITY","set","Disabled",0)
  306.     call notify("DITHER_OVERRIDE","Active",0,"DITHER_QUALITY","set","Disabled",1)
  307.     call notify("DITHER_OVERRIDE","Active","Everytime","DITHER_DEPTH","set","Disabled",0)
  308.     call notify("DITHER_OVERRIDE","Active",0,"DITHER_DEPTH","set","Disabled",1)
  309.  
  310.     call notify("PENS_OVERRIDE","Active","Everytime","PENS_QUALITY","set","Disabled",0)
  311.     call notify("PENS_OVERRIDE","Active",0,"PENS_QUALITY","set","Disabled",1)
  312.  
  313.     call notify("OUTPUT_MODE","Active","Everytime","crg","set","Disabled",0)
  314.     call notify("OUTPUT_MODE","Active",0,"crg","set","Disabled",1)
  315.  
  316.     call notify("DITHER","Active","Everytime","QUANTIZATION","set","Disabled",0)
  317.     call notify("DITHER","Active",1,"QUANTIZATION","set","Disabled",1)
  318.  
  319.     call notify("GAMMA_CORRECTION","Selected","Everytime","GammaCorrection","set","Disabled","NotTriggerValue")
  320.     call Notify("ScreenGammaLV","DoubleClick","EveryTime","ScreenGammaPO","Close",1)
  321.     call Notify("ImageGammaLV","DoubleClick","EveryTime","ImageGammaPO","Close",1)
  322.  
  323.     call notify("save","Pressed",0,"app","return","call SaveConfigExit(1)")
  324.     call notify("use","Pressed",0,"app","return","call SaveConfigExit(0)")
  325.     call notify("test","Pressed",0,"app","return","call TestConfig()")
  326.     call notify("cancel","Pressed",0,"app","returnid","quit")
  327.  
  328.     call set("mwin","defaultobject","hlister")
  329.  
  330.     call info("Welcome to WarpDTPrefs!")
  331.  
  332.     set.0="mwin"; set.0.attr="open";  set.0.value=1
  333.     set.1="app";  set.1.attr="sleep"; set.1.value=1
  334.     call MultiSetAttr("set")
  335.  
  336.     /* Globals */
  337.     global.gad.0="DITHER_OVERRIDE" ;  global.gad.0.attr="Active"
  338.     global.gad.1="DITHER_QUALITY"  ;  global.gad.1.attr="Active"
  339.     global.gad.2="DITHER_DEPTH"    ;  global.gad.2.attr="Value"
  340.     global.gad.3="PENS_OVERRIDE"   ;  global.gad.3.attr="Active"
  341.     global.gad.4="PENS_QUALITY"    ;  global.gad.4.attr="Active"
  342.  
  343.     /* JPEG */
  344.     global.gad.5="OUTPUT_MODE"     ;  global.gad.5.attr="Active"
  345.     global.gad.6="DCT_METHOD"      ;  global.gad.6.attr="Active"
  346.     global.gad.7="FANCY_UPSAMPLING";  global.gad.7.attr="Selected"
  347.     global.gad.8="DITHER"          ;  global.gad.8.attr="Active"
  348.     global.gad.9="QUANTIZATION"    ;  global.gad.9.attr="Active"
  349.     global.gad.10="NUM_COLOURS"    ;  global.gad.10.attr="Value"
  350.  
  351.     /* PNG */
  352.     global.gad.11="GAMMA_CORRECTION"; global.gad.11.attr="Selected"
  353.     global.gad.12="SCREEN_GAMMA";     global.gad.12.attr="Contents"
  354.     global.gad.13="IMAGE_GAMMA";      global.gad.13.attr="Contents"
  355.     global.gad.14="ALPHA_MODE";       global.gad.14.attr="Selected"
  356.  
  357.     /* TIFF */
  358.     global.gad.15="FAX_SCALING";      global.gad.15.attr="Active"
  359.     global.gad.16="FAX_EXPAND";       global.gad.16.attr="Selected"
  360.  
  361.     call ReadConfigAll(0)
  362.     call ConfigToGadgets("GLOBAL.PREFS")
  363.  
  364.     call set("app","sleep",0)
  365.     return
  366. /***********************************************************************/
  367. info: procedure expose global.
  368. parse arg msg,ntsave
  369.     if msg="" then msg=global.last
  370.     else if ntsave~=1 then global.last=msg
  371.     call set("info","contents",msg)
  372.     return
  373. /***********************************************************************/
  374. ConfigToGadgets: procedure expose global.
  375.     /* Globals */
  376.     global.gad.0.value=global.prefs.DITHER_OVERRIDE
  377.     global.gad.1.value=global.prefs.DITHER_QUALITY
  378.     global.gad.2.value=global.prefs.DITHER_DEPTH
  379.     global.gad.3.value=global.prefs.PENS_OVERRIDE
  380.     global.gad.4.value=global.prefs.PENS_QUALITY
  381.  
  382.     /* JPEG */
  383.     global.gad.5.value=global.prefs.OUTPUT_MODE
  384.     global.gad.6.value=global.prefs.DCT_METHOD
  385.     global.gad.7.value=global.prefs.FANCY_UPSAMPLING
  386.     global.gad.8.value=global.prefs.DITHER
  387.     global.gad.9.value=global.prefs.QUANTIZATION
  388.     global.gad.10.value=global.prefs.NUM_COLOURS
  389.  
  390.     /* PNG */
  391.     global.gad.11.value=global.prefs.GAMMA_CORRECTION
  392.     global.gad.12.value=global.prefs.SCREEN_GAMMA
  393.     global.gad.13.value=global.prefs.IMAGE_GAMMA
  394.     global.gad.14.value=global.prefs.ALPHA_MODE
  395.  
  396.     /* TIFF */
  397.     global.gad.15.value=global.prefs.FAX_SCALING
  398.     global.gad.16.value=global.prefs.FAX_EXPAND
  399.  
  400.     call MultiSetAttr("global.gad")
  401.     return
  402. /***************************************************************************/
  403. GadgetsToConfig: procedure expose global.
  404. parse arg from
  405.     call MultiGetAttr("global.gad")
  406.  
  407.     /* Globals */
  408.     global.prefs.DITHER_OVERRIDE  = global.gad.0.value
  409.     global.prefs.DITHER_QUALITY   = global.gad.1.value
  410.     global.prefs.DITHER_DEPTH     = global.gad.2.value
  411.     global.prefs.PENS_OVERRIDE    = global.gad.3.value
  412.     global.prefs.PENS_QUALITY     = global.gad.4.value
  413.  
  414.     /* JPEG */
  415.     global.prefs.OUTPUT_MODE      = global.gad.5.value
  416.     global.prefs.DCT_METHOD       = global.gad.6.value
  417.     global.prefs.FANCY_UPSAMPLING = global.gad.7.value
  418.     global.prefs.DITHER           = global.gad.8.value
  419.     global.prefs.QUANTIZATION     = global.gad.9.value
  420.     global.prefs.NUM_COLOURS      = global.gad.10.value
  421.  
  422.     /* PNG */
  423.     global.prefs.GAMMA_CORRECTION = global.gad.11.value
  424.     global.prefs.SCREEN_GAMMA     = global.gad.12.value
  425.     global.prefs.IMAGE_GAMMA      = global.gad.13.value
  426.     global.prefs.ALPHA_MODE       = global.gad.14.value
  427.  
  428.     /* TIFF */
  429.     global.prefs.FAX_SCALING      = global.gad.15.value
  430.     global.prefs.FAX_EXPAND       = global.gad.16.value
  431.  
  432.     return
  433. /***************************************************************************/
  434. ConfigToDefaults: procedure expose global.
  435.     /* Globals */
  436.     global.prefs.DITHER_OVERRIDE    = 0
  437.     global.prefs.DITHER_QUALITY     = 2
  438.     global.prefs.DITHER_DEPTH       = 8
  439.     global.prefs.PENS_OVERRIDE      = 0
  440.     global.prefs.PENS_QUALITY       = 1
  441.  
  442.     /* JPEG */
  443.     global.prefs.OUTPUT_MODE        = 0
  444.     global.prefs.DCT_METHOD         = 1
  445.     global.prefs.FANCY_UPSAMPLING   = 0
  446.     global.prefs.DITHER             = 2
  447.     global.prefs.QUANTIZATION       = 1
  448.     global.prefs.NUM_COLOURS        = 256
  449.  
  450.     /* PNG */
  451.     global.prefs.GAMMA_CORRECTION   = 1
  452.     global.prefs.SCREEN_GAMMA       = 2.2
  453.     global.prefs.IMAGE_GAMMA        = 0.45455
  454.     global.prefs.ALPHA_MODE         = 1
  455.  
  456.     /* TIFF */
  457.     global.prefs.FAX_SCALING        = 0
  458.     global.prefs.FAX_EXPAND         = 0
  459.     return
  460. /**************************************************************************/
  461. ReadConfigAll: procedure expose global.
  462. parse arg saved
  463.     call set("app","sleep",1)
  464.     call info("Reading preferences...",1)
  465.     call ConfigToDefaults()
  466.  
  467.     call ReadConfig(saved,"DT")
  468.     call ReadConfig(saved,"JPEG")
  469.     call ReadConfig(saved,"PNG")
  470.     call ReadConfig(saved,"TIFF")
  471.     call ReadConfig(saved,"BMP")
  472.     call ReadConfig(saved,"PSD")
  473.  
  474.     call CopyConfig("GLOBAL.PREFS","GLOBAL.BACKPREFS")
  475.     call info("")
  476.     call set("app","sleep",0)
  477.  
  478.     return
  479. /**************************************************************************/
  480. ReadConfig: procedure expose global.
  481. parse arg saved,what
  482.  
  483.     select
  484.         when what="DT"   then file="WarpDT.prefs"
  485.         when what="JPEG" then file="WarpJPEG.prefs"
  486.         when what="PNG"  then file="WarpPNG.prefs"
  487.         when what="TIFF" then file="WarpTIFF.prefs"
  488.         when what="BMP"  then file="WarpBMP.prefs"
  489.         when what="PSD"  then file="WarpPNG.prefs"
  490.     end
  491.  
  492.     if saved then file=AddPart("ENVARC:Datatypes",file)
  493.     else file=AddPart("ENV:Datatypes",file)
  494.  
  495.     conf=GetVar(file,"GLOBAL BINARY")
  496.  
  497.     do while conf~=""
  498.         parse upper var conf key "=" value "A"x conf
  499.         select
  500.  
  501.             /* Globals */
  502.             when what="DT" & key="DITHER_OVERRIDE" then do
  503.                 p=find("NOTHING DEFAULTS APPS EVERYTHING",value)
  504.                 if p>0 then global.prefs.DITHER_OVERRIDE=p-1
  505.             end
  506.  
  507.             when what="DT" & key="DITHER_QUALITY" then do
  508.                 p=find("POOR GOOD BEST",value)
  509.                 global.prefs.DITHER_QUALITY=p-1
  510.             end
  511.  
  512.             when what="DT" & key="DITHER_DEPTH" then
  513.                 if Datatype(value,"n") then do
  514.                     if value>24 then value=24
  515.                     else if value<1 then value=1
  516.                     global.prefs.DITHER_DEPTH=value
  517.                 end
  518.  
  519.             when what="DT" & key="PENS_OVERRIDE" then do
  520.                 p=find("NOTHING DEFAULTS APPS EVERYTHING",value)
  521.                 if p>0 then global.prefs.PENS_OVERRIDE=p-1
  522.             end
  523.  
  524.             when what="DT" & key="PENS_QUALITY" then do
  525.                 p=find("POOR GOOD BEST",value)
  526.                 if p>0 then global.prefs.PENS_QUALITY=p-1
  527.             end
  528.  
  529.             /* JPEG */
  530.             when what="JPEG" & key="OUTPUT_MODE" then do
  531.                 p=find("FULL REDUCED GREY",value)
  532.                 if p>0 then global.prefs.OUTPUT_MODE=p-1
  533.             end
  534.  
  535.             when what="JPEG" & key="DCT_METHOD" then do
  536.                 p=find("FAST SLOW",value)
  537.                 if p>0 then global.prefs.DCT_METHOD=p-1
  538.             end
  539.  
  540.             when what="JPEG" & key="FANCY_UPSAMPLING" then do
  541.                 p=find("OFF ON",value)
  542.                 if p>0 then global.prefs.FANCY_UPSAMPLING=p-1
  543.             end
  544.  
  545.             when what="JPEG" & key="DITHER" then do
  546.                 p=find("NONE ORDERED FS",value)
  547.                 if p>0 then global.prefs.DITHER=p-1
  548.             end
  549.  
  550.             when what="JPEG" & key="QUANTIZATION" then do
  551.                 p=find("POOR BEST",value)
  552.                 if p>0 then global.prefs.QUANTIZATION=p-1
  553.             end
  554.  
  555.             when what="JPEG" & key="NUM_COLOURS" then
  556.                 if Datatype(value,"n") then do
  557.                     if value>256 then value=256
  558.                     else if value<8 then value=8
  559.                     global.prefs.NUM_COLOURS=value
  560.                 end
  561.  
  562.             /* PNG */
  563.             when what="PNG" & key="GAMMA_CORRECTION" then do
  564.                 p=find("OFF ON",value)
  565.                 if p>0 then global.prefs.GAMMA_CORRECTION=p-1
  566.             end
  567.  
  568.             when what="PNG" & key="SCREEN_GAMMA" then do
  569.                 if DataType(value,"N") then global.prefs.SCREEN_GAMMA=value/1000000
  570.             end
  571.  
  572.             when what="PNG" & key="IMAGE_GAMMA" then do
  573.                 if DataType(value,"N") then global.prefs.IMAGE_GAMMA=value/1000000
  574.             end
  575.  
  576.             when what="PNG" & key="ALPHA_MODE" then do
  577.                 p=find("OFF ON",value)
  578.                 if p>0 then global.prefs.ALPHA_MODE=p-1
  579.             end
  580.  
  581.             /* TIFF */
  582.             when what="TIFF" & key="FAX_SCALING" then do
  583.                 p=find("FULL HALF QUARTER",value)
  584.                 if p>0 then global.prefs.FAX_SCALING=p-1
  585.             end
  586.  
  587.             when what="TIFF" & key="FAX_EXPAND" then do
  588.                 p=find("OFF ON",value)
  589.                 if p>0 then global.prefs.FAX_EXPAND=p-1
  590.             end
  591.  
  592.             otherwise nop
  593.         end
  594.     end
  595.  
  596.     return
  597. /***********************************************************************/
  598. SaveConfigAll: procedure expose global.
  599. parse arg save
  600.     call set("app","sleep",1)
  601.     call info("Saving preferences...",1)
  602.  
  603.     call SaveConfig(save,"DT")
  604.     call SaveConfig(save,"JPEG")
  605.     call SaveConfig(save,"PNG")
  606.     call SaveConfig(save,"TIFF")
  607.     call SaveConfig(save,"BMP")
  608.     call SaveConfig(save,"PSD")
  609.  
  610.     call CopyConfig("GLOBAL.PREFS","GLOBAL.BACKPREFS")
  611.  
  612.     global.test=0
  613.     call info("")
  614.     call set("app","sleep",0)
  615.  
  616.     return
  617. /**************************************************************************/
  618. SaveConfig: procedure expose global.
  619. parse arg save,what
  620.  
  621.     conf=""
  622.  
  623.     /* Globals */
  624.     conf=conf || "DITHER_OVERRIDE="  || word("nothing defaults apps everything",global.prefs.DITHER_OVERRIDE+1) || "A"x
  625.     conf=conf || "DITHER_QUALITY="   || word("poor good best",global.prefs.DITHER_QUALITY+1) || "A"x
  626.     conf=conf || "DITHER_DEPTH="     || global.prefs.DITHER_DEPTH  || "A"x
  627.     conf=conf || "PENS_OVERRIDE="    || word("nothing defaults apps everything",global.prefs.PENS_OVERRIDE+1) || "A"x
  628.     conf=conf || "PENS_QUALITY="     || word("poor good best",global.prefs.PENS_QUALITY+1)
  629.  
  630.     select
  631.         when what="DT" then file="Datatypes/WarpDT.prefs"
  632.  
  633.         when what="JPEG" then do
  634.             file="Datatypes/WarpJPEG.prefs"
  635.             conf=conf || "A"x
  636.             conf=conf || "OUTPUT_MODE="      || word("full reduced grey",global.prefs.OUTPUT_MODE+1) || "A"x
  637.             conf=conf || "DCT_METHOD="       || word("slow fast",global.prefs.DCT_METHOD+1) || "A"x
  638.             conf=conf || "FANCY_UPSAMPLING=" || word("off on",global.prefs.FANCY_UPSAMPLING+1) || "A"x
  639.             conf=conf || "DITHER="           || word("none ordered fs",global.prefs.DITHER+1) || "A"x
  640.             conf=conf || "QUANTIZATION="     || word("poor best",global.prefs.QUANTIZATION+1) || "A"x
  641.             conf=conf || "NUM_COLOURS="      || global.prefs.NUM_COLOURS
  642.         end
  643.  
  644.         when what="PNG" then do
  645.             file="Datatypes/WarpPNG.prefs"
  646.             conf=conf || "A"x
  647.             conf=conf || "GAMMA_CORRECTION=" || word("off on",global.prefs.GAMMA_CORRECTION+1) || "A"x
  648.             v=global.prefs.SCREEN_GAMMA
  649.             p=pos('.',global.prefs.SCREEN_GAMMA)
  650.             if p>0 then if pos('.',global.prefs.SCREEN_GAMMA,p+1) then v=2.2
  651.             conf=conf || "SCREEN_GAMMA="     || trunc(v*1000000) || "A"x
  652.             v=global.prefs.IMAGE_GAMMA
  653.             p=pos('.',global.prefs.IMAGE_GAMMA)
  654.             if p>0 then if pos('.',global.prefs.IMAGE_GAMMA,p+1) then v=0.45455
  655.             conf=conf || "IMAGE_GAMMA="      || trunc(v*1000000) || "A"x
  656.             conf=conf || "ALPHA_MODE="       || word("off on",global.prefs.ALPHA_MODE+1)
  657.         end
  658.  
  659.         when what="TIFF" then do
  660.             file="Datatypes/WarpTIFF.prefs"
  661.             conf=conf || "A"x
  662.             conf=conf || "FAX_SCALING="      || word("full half quarter",global.prefs.FAX_SCALING+1) || "A"x
  663.             conf=conf || "FAX_EXPAND="       || word("off on",global.prefs.FAX_EXPAND+1)
  664.         end
  665.  
  666.         when what="BMP" then file="Datatypes/WarpBMP.prefs"
  667.  
  668.         when what="PSD" then file="Datatypes/WarpPSD.prefs"
  669.     end
  670.  
  671.     if save then call SetVar(file,conf,"SAVE GLOBAL")
  672.     else call SetVar(file,conf)
  673.  
  674.     return
  675. /***************************************************************************/
  676. GetSaveConfig: procedure expose global.
  677. parse arg save
  678.     call GadgetsToConfig()
  679.     call SaveConfigAll(save)
  680.     return
  681. /***********************************************************************/
  682. SaveConfigExit: procedure expose global.
  683. parse arg save
  684.     call set("mwin","open",0)
  685.     call GetSaveConfig(save)
  686.     exit
  687. /***********************************************************************/
  688. DefaultConfig: procedure expose global.
  689.     call ConfigToDefaults()
  690.     call CopyConfig("GLOBAL.PREFS","GLOBAL.BACKPREFS")
  691.     call ConfigToGadgets()
  692.     return
  693. /***************************************************************************/
  694. RestoreConfig: procedure expose global.
  695. parse arg saved
  696.     if saved then call ReadConfigAll(1)
  697.     else call CopyConfig("GLOBAL.BACKPREFS","GLOBAL.PREFS")
  698.     call ConfigToGadgets()
  699.     return
  700. /***************************************************************************/
  701. TestConfig: procedure expose global.
  702.     call CopyConfig("GLOBAL.BACKPREFS","GLOBAL.TESTPREFS")
  703.     call GetSaveConfig(0)
  704.     global.test=1
  705.     return
  706. /***************************************************************************/
  707. CopyConfig: procedure expose global.
  708. parse arg from,to
  709.     /* Global */
  710.     interpret to".DITHER_OVERRIDE   = "from".DITHER_OVERRIDE"
  711.     interpret to".DITHER_QUALITY    = "from".DITHER_QUALITY"
  712.     interpret to".DITHER_DEPTH      = "from".DITHER_DEPTH"
  713.     interpret to".PENS_OVERRIDE     = "from".PENS_OVERRIDE"
  714.     interpret to".PENS_QUALITY      = "from".PENS_QUALITY"
  715.     /* JPEG */
  716.     interpret to".OUTPUT_MODE       = "from".OUTPUT_MODE"
  717.     interpret to".DCT_METHOD        = "from".DCT_METHOD"
  718.     interpret to".FANCY_UPSAMPLING  = "from".FANCY_UPSAMPLING"
  719.     interpret to".DITHER            = "from".DITHER"
  720.     interpret to".QUANTIZATION      = "from".QUANTIZATION"
  721.     interpret to".NUM_COLOURS       = "from".NUM_COLOURS"
  722.     /* PNG */
  723.     interpret to".GAMMA_CORRECTION  = "from".GAMMA_CORRECTION"
  724.     interpret to".SCREEN_GAMMA      = "from".SCREEN_GAMMA"
  725.     interpret to".IMAGE_GAMMA       = "from".IMAGE_GAMMA"
  726.     interpret to".ALPHA_MODE        = "from".ALPHA_MODE"
  727.     /* TIFF */
  728.     interpret to".FAX_SCALING       = "from".FAX_SCALING"
  729.     interpret to".FAX_EXPAND        = "from".FAX_EXPAND"
  730.  
  731.     return
  732. /***************************************************************************/
  733. SafeExit: procedure expose global.
  734.     if global.test then do
  735.         call CopyConfig("GLOBAL.TESTPREFS","GLOBAL.PREFS")
  736.         call SaveConfigAll(0)
  737.     end
  738.     exit
  739. /***************************************************************************/
  740. halt:
  741. break_c:
  742.     call SafeExit()
  743. /**************************************************************************/
  744.